import axios from 'axios'
import qs from 'qs'
import router from '../router'
/**
 *  接口地址
 */
let baseUrl = '';
let baseImgPath = '';
if (process.env.NODE_ENV == 'development') {
    baseUrl = 'http://mall-api.com';
    baseImgPath = '//elm.cangdu.org/img/';
}else{
    baseUrl = '//elm.cangdu.org';
    baseImgPath = '//elm.cangdu.org/img/';
}

/**
 * 请求参数配置
 */
axios.interceptors.request.use(config => {    //
    //将token放在请求头中
    let uInfo = sessionStorage.getItem('uInfo');
    if (uInfo) {
        let token = JSON.parse(uInfo).token;
        config.headers['token'] = token
    }
    return config;
}, err => {
    return Promise.reject(err);
});

/**
 * 接口响应
 */
axios.interceptors.response.use(response => {
    return response
}, error => {
    return Promise.resolve(error.response)
});


/**
 * 接口已响应 检测
 */

function checkStatus (response) {
    console.log(response);
    //token无效或者过期跳转到登录页面
    if(response.data.code == 999){
        sessionStorage.removeItem("uInfo");
        router.push("/")
    }
    // 如果http状态码正常，则直接返回数据
    if (response && (response.status === 200 || response.status === 304 ||
            response.status === 400)) {
        return response.data
    }
    // 异常状态下，把错误信息返回去
    return {
        status: -404,
        msg: '网络异常'
    }
}

/**
 * 接口未响应 检测
 */
function checkCode (res) {
    // 如果code异常(这里已经包括网络错误，服务器错误，后端抛出的错误)，可以弹出一个错误提示，告诉用户
    if (res.status === -404) {
        alert(res.msg)
    }
    if (res.data && (!res.data.success)) {
        // alert(res.data.error_msg)
    }
    return res
}

/**
 * 请求方式
 */
export default {
    post (url, data) {
        return axios({
            method: 'post',
            baseURL:baseUrl,
            url: url+'?'+Math.random()*100000,
            data: qs.stringify(data),
            timeout: 10000,
            headers: {
                'X-Requested-With': 'XMLHttpRequest',
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
            }
        }).then(
            (response) => {
                return checkStatus(response)
            }
        ).then(
            (res) => {
                return checkCode(res)
            }
        )
    },
    get (url, params) {
        return axios({
            method: 'get',
            baseURL:baseUrl,
            //baseURL: baseUrl,
            url: url+'?'+Math.random()*100000,
            params, // get 请求时带的参数
            timeout: 100000,
            headers: {
                'X-Requested-With': 'XMLHttpRequest'
            }
        }).then(
            (response) => {
                return checkStatus(response)
            }
        ).then(
            (res) => {
                return checkCode(res)
            }
        )
    },
}
